/**
 * \file
 * \brief 系统滴答
 *
 * \internal
 * \par Modification history
 * - 1.00 21-06-03  zjk, first implementation
 * \endinternal
 */

#include "systick.h"
#include "utilities.h"
#include <errno.h>
#include <string.h>
#include <sys/time.h>
#include <time.h>

/*******************************************************************************
  宏定义
*******************************************************************************/

/*******************************************************************************
  本地全局变量声明
*******************************************************************************/

/*******************************************************************************
  本地全局变量定义
*******************************************************************************/

/*******************************************************************************
  内部函数定义
*******************************************************************************/

/*******************************************************************************
  外部函数定义
*******************************************************************************/

/**
 * \brief 获取系统滴嗒
 */
uint32_t systick_get (void)
{
  uint32_t systick = 0;
  struct timespec tv;

  if (clock_gettime(CLOCK_MONOTONIC, &tv) != 0)
  {
    zlog_error(gp_utilities_zlogc, "clock_gettime error: %s", strerror(errno));
  }
  else
  {
    systick = (tv.tv_sec * 1000) + (tv.tv_nsec / 1000000);
  }

  return (systick == 0) ? 1 : systick;
}

/* end of file */
